package persistencia;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import negocio.Administrativo;
import negocio.Area;
import negocio.Contacto;
import negocio.Cursada;
import negocio.Curso;
import negocio.Recado;
import negocio.Usuario;

public class RecadoDAO {
	
	private Connection c;
	private static RecadoDAO instancia;
	
	private RecadoDAO()
	{
		c = BDManager.getInstance().getConexion();
	}
	
	public static RecadoDAO  getInstance()
	{
		if(instancia == null)
			instancia = new RecadoDAO();
		return instancia;
	}
	
	public void guardar(Recado rec)
	{
		String query="INSERT INTO recado (asunto, cuerpo, fecharecado, hora, estado, remitente_fk, receptor_fk, eliminadorecibidos, eliminadoenviados) VALUES ('"+
				rec.getAsunto()+"','"+ rec.getCuerpo()+"','"+ rec.getFechaRecado().toString()+"','"+rec.getHora().toString()+"','"+
				rec.getEstado()+"','"+ rec.getRemitente().getDni()+"','"+rec.getReceptor().getDni()+"',"+false+","+false+")";
		//System.out.println(query);
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} catch (SQLException e) 
		{
			e.printStackTrace();
		}
	}

	public ArrayList<Recado> getAll() 
		{
			String query = "SELECT * FROM recado order by fecharecado, hora";
			Statement s;
			ResultSet rs;
			ArrayList<Recado> res = new ArrayList<Recado>();
			try {
				s = c.createStatement();
				rs = s.executeQuery(query);
				while(rs.next())
				{
					Usuario remitente= UsuarioDAO.getInstance().getUsuario(rs.getString("remitente_fk"));
					Usuario receptor= UsuarioDAO.getInstance().getUsuario(rs.getString("receptor_fk"));					
					res.add(new Recado(rs.getInt("id"),rs.getString("asunto"), rs.getString("cuerpo"), rs.getDate("fecharecado"), rs.getString("estado"),
							remitente, receptor, rs.getTime("hora"),rs.getBoolean("eliminadorecibidos"), rs.getBoolean("eliminadoenviados")));
					
				}
				s.close();
			} catch (SQLException e) 
			{
				e.printStackTrace();
			}
			return res;
	}

	public void cambiarEstado(Recado recado, String nuevoEstado) {
		String query = "UPDATE recado SET estado='" +nuevoEstado+"' WHERE id=" + recado.getId() + ";";
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} 
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		
	}

	public void cambiarEstadoRecibidos(Recado recado, boolean eliminadoRecibidos) {
		String query = "UPDATE recado SET eliminadorecibidos=" +eliminadoRecibidos+" WHERE id=" + recado.getId() + ";";
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} 
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		
	}

	public void cambiarEstadoEnviados(Recado recado, boolean eliminadoEnviados) {
		String query = "UPDATE recado SET eliminadoenviados=" +eliminadoEnviados+" WHERE id=" + recado.getId() + ";";
		try {
			Statement s = c.createStatement();
			s.execute(query);
			s.close();
		} 
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		
	}
	
	
}
